class: title-slide, inverse, right, top background-image: url(data:image/png;base64,#02_img/logo-uc.png) background-position: 7% 13% background-size: 20%, cover <br> .right[ # Sesión 4 ### <br> Visualización de datos en R ] <br> <br> <br> <br> <br> <br> .left[Campamento de invierno EGOB | UC | 04 de agosto, 2023] <hr> .left[
<b>JosƩ D. Conejeros</b> | [
jdconejeros@uc.cl](mailto:jdconejeros@uc.cl) ] --- layout:true <div class="my-footer"> <span style="width:100%; text-align:center">
Sesión 4|
<a href=mailto:jdconejeros@uc.cl style="color: white"> jdconejeros@uc.cl |
Escuela de Gobierno UC 2023</a> </span> </div> --- name: sl0 class: inverse middle animated, fadeIn #.pull-left[.center-l[GuĆa]] .pull-right[ .center-r[ .large[ 1. [ĀæQuĆ© es un grĆ”fico?](#t1) 2. [Buenos y malos grĆ”ficos](#t2) 3. [Algunos criterios de guĆa](#t3) 4. [Herramientas para visualizar datos](#t4) 5. [`ggplot2`: uso de capas](#t5) 6. [Construcción de visualizaciones bĆ”sicas: barras, lĆneas y puntos](#t6) ] ] ] --- ## Mismas estadĆsticas, diferentes datos <img src="data:image/png;base64,#02_img/DinoSequentialSmaller.gif" width="100%" height="100%" style="display: block; margin: auto;" /> [Matejka, J., & Fitzmaurice, G. (2017, May). Same stats, different graphs: generating datasets with varied appearance and identical statistics through simulated annealing. In Proceedings of the 2017 CHI conference on human factors in computing systems (pp. 1290-1294).](https://www.autodesk.com/research/publications/same-stats-different-graphs) --- ## Algunas visualizaciones de datos <img src="data:image/png;base64,#02_img/pie-genus.png" width="60%" height="60%" style="display: block; margin: auto;" /> --- ## Algunas visualizaciones de datos <img src="data:image/png;base64,#02_img/how-stuff-works-recidivism.png" width="50%" height="50%" style="display: block; margin: auto;" /> --- ## Algunas visualizaciones de datos <img src="data:image/png;base64,#02_img/salario_min.jpeg" width="50%" height="50%" style="display: block; margin: auto;" /> --- ## Algunas visualizaciones de datos <img src="data:image/png;base64,#02_img/plebiscito.jpeg" width="75%" height="75%" style="display: block; margin: auto;" /> --- ## Algunas visualizaciones de datos <img src="data:image/png;base64,#02_img/covid.jpeg" width="75%" height="75%" style="display: block; margin: auto;" /> --- ## Problemas de estos grĆ”ficos - **EstĆ©ticos**: dimensiones, colores y formas <img src="data:image/png;base64,#02_img/badplot1.png" width="60%" height="60%" style="display: block; margin: auto;" /> --- ## Problemas de estos grĆ”ficos - **EstĆ©ticos**: dimensiones, colores y formas <img src="data:image/png;base64,#02_img/monster.png" width="60%" height="60%" style="display: block; margin: auto;" /> --- ## Problemas de estos grĆ”ficos - **Sustantivos**: provenientes de la generación de datos .pull-left[ <img src="data:image/png;base64,#02_img/democracy-nyt-version.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="data:image/png;base64,#02_img/democracy-voeten-version-2.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] [Taub, A. (2016). How stable are democracies?āWarning signs are flashing redā. New York Times, 29(11), 2016.](https://www.uvm.edu/~lmholmes/Taub,%20How%20Stable%20Are%20Democracies.pdf) --- ## Problemas de estos grĆ”ficos - **Percepción**: cómo las personas perciben y procesan lo que estĆ”n mirando. Las visualizaciones codifican nĆŗmeros en lĆneas, formas y colores. Eso significa que nuestra interpretación de estas codificaciones estĆ” parcialmente condicionada a cómo percibimos las formas y relaciones geomĆ©tricas en general. <img src="data:image/png;base64,#02_img/ch-01-excel-3d-column-chart-values.png" width="75%" height="75%" style="display: block; margin: auto;" /> --- ## Problemas de estos grĆ”ficos - **Percepción**: cómo las personas perciben y procesan lo que estĆ”n mirando. Las visualizaciones codifican nĆŗmeros en lĆneas, formas y colores. <img src="data:image/png;base64,#02_img/ch-01-preception-data-1.png" width="75%" height="75%" style="display: block; margin: auto;" /> --- ## Buenas visualizaciones <br> <br> <br> .center[ > La excelencia grĆ”fica es la presentación bien diseƱada de datos interesantes: **una cuestión de sustancia, de estadĆsticas y de diseƱo**... [*Consiste*] en ideas complejas comunicadas con claridad, precisión y eficiencia. ⦠[*Es*] lo que le da al espectador **la mayor cantidad de ideas en el menor tiempo posible con la menor cantidad de tinta en el espacio mĆ”s pequeƱo** ⦠[*Es*] casi siempre multivariante ⦠Y la excelencia grĆ”fica requiere decir la verdad sobre los datos. (Tufte, 1983, pĆ”g. 51). [Tufte, E. R. (1985). The visual display of quantitative information. The Journal for Healthcare Quality (JHQ), 7(3), 15.](http://faculty.salisbury.edu/~jtanderson/teaching/cosc311/fa21/files/tufte.pdf) ] --- ## Algunas visualizaciones de datos son mejores que otras Si bien es tentador simplemente comenzar a establecer la ley sobre lo que funciona y lo que no, el proceso de hacer un grĆ”fico realmente bueno o realmente Ćŗtil no puede reducirse a una lista de reglas simples que deben seguirse sin excepción en todas las circunstancias. **Los grĆ”ficos que haces estĆ”n destinados a ser vistos por alguien.** La efectividad de cualquier grĆ”fico en particular no es solo una cuestión de cómo se ve en abstracto, sino tambiĆ©n **una cuestión de quiĆ©n lo estĆ” mirando y por quĆ©**. Una imagen destinada a una audiencia de expertos que lea una revista profesional puede no ser fĆ”cilmente interpretable por el pĆŗblico en general. Una visualización rĆ”pida de un conjunto de datos que estĆ” explorando actualmente podrĆa no ser de mucha utilidad para sus compaƱeros o estudiantes. --- ## Buenas visualizaciones <br> <br> <br> .center[ **Buena estĆ©tica** **Sin problemas sustantivos** **Sin problemas de percepción** **Identificar un pĆŗblico objetivo** **Honestidad y buen juicio** ] --- ## TecnologĆas para visualizar datos <img src="data:image/png;base64,#02_img/dataviz_soft.webp" width="100%" height="100%" style="display: block; margin: auto;" /> .center[[The Data Visualization Tools Wars](https://policyviz.com/2022/02/01/the-data-visualization-tools-wars/)] --- ## Construcción de piezas grĆ”ficas **ĀæQuĆ© es un grĆ”fico?** Un grĆ”fico es una representación visual que resume datos estadĆsticos, de manera tal que podamos interpretarlos, analizarlos y entenderlos de forma mĆ”s sencilla. **ĀæCuĆ”ndo hacemos un grĆ”fico?** - Cuando deseamos realizar un anĆ”lisis exploratorio de datos, por ejemplo, descubrir el comportamiento o distribución variable. - Cuando necesitamos exhibir los resultados de un anĆ”lisis al pĆŗblico, en este caso solemos prestarle mĆ”s atención a la estĆ©tica de los grĆ”ficos. --- ## Ejemplos <iframe width="1212" height="682" src="https://covid19.who.int/" title="https://covid19.who.int/" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" style="width:100%; height:80%;" allowfullscreen></iframe> --- ## Ejemplos <div class="infogram-embed" data-id="79acdebc-18ad-4399-8936-bce3b3a49068" data-type="interactive" data-title="dgd-infografia-parte1" style="width: 950px; height: 545px; overflow-y: scroll;"></div><script>!function(e,i,n,s){var t="InfogramEmbeds",d=e.getElementsByTagName("script")[0];if(window[t]&&window[t].initialized)window[t].process&&window[t].process();else if(!e.getElementById(n)){var o=e.createElement("script");o.async=1,o.id=n,o.src="https://e.infogram.com/js/dist/embed-loader-min.js",d.parentNode.insertBefore(o,d)}}(document,0,"infogram-async");</script><div style="padding:8px 0;font-family:Arial!important;font-size:13px!important;line-height:15px!important;text-align:center;border-top:1px solid #dadada;margin:0 30px"><a href="https://infogram.com/79acdebc-18ad-4399-8936-bce3b3a49068" style="color:#989898!important;text-decoration:none!important;" target="_blank">dgd-infografia-parte1</a><br><a href="https://infogram.com" style="color:#989898!important;text-decoration:none!important;" target="_blank" rel="nofollow">Infogram</a></div> --- ## Otros ejemplos .pull-left[ - Tutoriales: - [A ggplot2 Tutorial for Beautiful Plotting in R](https://www.cedricscherer.com/2019/08/05/a-ggplot2-tutorial-for-beautiful-plotting-in-r/) - [Ggplot evolution](https://www.cedricscherer.com/2019/05/17/the-evolution-of-a-ggplot-ep.-1/) - Ministerio de desarrollo social: [Data Social](https://datasocial.ministeriodesarrollosocial.gob.cl/portalDataSocial/catalogoDimension/86/0/0) - The World Bank: [DataBank](https://databank.worldbank.org/indicator/SE.PRM.NENR?Id=7f18f0c5&Report_Name=Health&populartype=series) - Datos de miĆ©rcoles: - [Latinoamericano](https://github.com/cienciadedatos/datos-de-miercoles) - [Anglo](https://github.com/rfordatascience/tidytuesday) ] .pull-right[ - Comunidad: - [#30dĆasdegrĆ”ficos](https://twitter.com/search?q=%2330d%C3%ADasdegr%C3%A1ficos&src=recent_search_click&f=live) - [#TidyTuesday](https://twitter.com/search?q=%23TidyTuesday&src=typeahead_click&f=live) - [#ggplot2](https://twitter.com/search?q=%23ggplot2&src=typed_query) - Algunas aplicaciones entretenidas: - [Photos on spirals](https://github.com/cj-holmes/photos-on-spirals) - [Gerative art](https://generative.substack.com/p/generative-art-and-r#:~:text=The%20R%20package%20generativeart%20lets,numbers%2C%20every%20image%20looks%20different.) - [Otros ejemplos](https://github.com/danielredondo/30diasdegraficos) ] --- ## Graficando con R Base .pull-left[ ```r # Definimos Vectores x <- 1:100 # Escalares n <- length(x); a <- 0.2; b <- 0.3; sigma<-0.5 set.seed(123)# Semilla aleatoria y <- a+b*x+sigma*rnorm(n) # Simulamos una variable aleatoria head(cbind(x,y), n=15) ``` ``` x y [1,] 1 0.2197622 [2,] 2 0.6849113 [3,] 3 1.8793542 [4,] 4 1.4352542 [5,] 5 1.7646439 [6,] 6 2.8575325 [7,] 7 2.5304581 [8,] 8 1.9674694 [9,] 9 2.5565736 [10,] 10 2.9771690 [11,] 11 4.1120409 [12,] 12 3.9799069 [13,] 13 4.3003857 [14,] 14 4.4553414 [15,] 15 4.4220794 ``` ] .pull-right[ ```r plot(x, y) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-14-1.png" width="504" /> ] --- ## Graficando con R base ```r fit_1 <- lm(y~x) coef(fit_1) ``` ``` (Intercept) x 0.1817981 0.3012555 ``` ```r a_hat <- coef(fit_1)[1] a_hat ``` ``` (Intercept) 0.1817981 ``` ```r b_hat <- coef(fit_1)[2] b_hat ``` ``` x 0.3012555 ``` --- count: false .panel1-g1-auto[ ```r *plot(x, y, main="Data y regresión lineal") ``` ] .panel2-g1-auto[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/g1_auto_01_output-1.png" width="504" /> ] --- count: false .panel1-g1-auto[ ```r plot(x, y, main="Data y regresión lineal") *abline(a_hat, b_hat, col="blue") ``` ] .panel2-g1-auto[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/g1_auto_02_output-1.png" width="504" /> ] <style> .panel1-g1-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-g1-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-g1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- .pull-left[ ```r hist(y, main = "Distribución variable Y", na.rm=T, xlab="Valores de Y", ylab="Frecuencia", col="blue", xlim=c(0, 20)) ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-18-1.png" width="504" /> ] --- ## GrĆ”ficos en R R base tiene herramientas grĆ”ficas limitadas, tanto en la cantidad de opciones que se tiene como en su personalización. Por lo que usaremos los grĆ”ficos de `ggplot2`. Estas herramientas, permiten generar una gran cantidad de grĆ”ficos a partir de la misma base computacional. <br> | **GrĆ”fico** | `R base` | `ggplot2` | |--------------|--------------------------|---------------------| | Puntos | `plot()` | `geom_point()` | | Lineas | `plot(..., type = "l")` | `geom_line()` | | Histograma | `hist()` | `geom_histogram()` | | Barras | `barplot()` | `geom_bar()` | | Boxplot | `boxplot()` | `geom_boxplot()` | --- ## Ggplot2 .pull-left[ Es un sistema para crear grĆ”ficos de forma declarativa, basado en [La GramĆ”tica de los GrĆ”ficos](https://www.amazon.com/Grammar-Graphics-Statistics-Computing/dp/0387245448). Usted proporciona los datos, le dice a ggplot2 cómo asignar variables a la estĆ©tica, quĆ© primitivas grĆ”ficas utilizar, y Ć©l se encarga de los detalles. **Es un sistema coherente para describir y construir grĆ”ficos, combinando componentes independientes. Es una herramienta estable con 10 aƱos en funcionamiento.** ] .pull-right[ <img src="data:image/png;base64,#02_img/ggplot2.png" width="50%" height="50%" style="display: block; margin: auto;" /> ```r install.packages("ggplot2") library(ggplot2) ``` ] --- ## GramĆ”tica de los grĆ”ficos en capas **AƱadimos caracterĆsticas a los grĆ”ficos paso a paso** <img src="data:image/png;base64,#02_img/grammar.png" width="75%" height="75%" style="display: block; margin: auto;" /> .center[ **.blue[La clave que las capas se van sumando: "+"]** ] --- ## Componentes de un grĆ”fico 1. Datos a utilizar 2. ParamĆ©tros estĆ©ticos con que se registrarĆ”n las variables, es decir, cómo se asignarĆ”n las variables de nuestro conjunto de datos a ciertas propiedades visuales. Esto considera ejes de grĆ”ficos, colores, etc. La función para indicar esto es `aes()` (del inglĆ©s *aesthetics*). 3. Una capa que indique la forma en que se representarĆ”n grĆ”ficamente los datos (con la función `geom_*()`). .center[ **.darkpurple[ggplot(data=].red[Datos], .darkpurple[aes(].red[MAPEOS])) .darkpurple[+] ** **.darkpurple[geom_].red[TIPO_DE_GRAFICO(...)] .darkpurple[+] ** **.red[Otras capas]** ] --- ## Tipos de grĆ”ficos .pull-left[ <img src="data:image/png;base64,#02_img/gg1.png" width="80%" height="80%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="data:image/png;base64,#02_img/gg2.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] --- ## Tipos de grĆ”ficos .pull-left[ <img src="data:image/png;base64,#02_img/gg3.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="data:image/png;base64,#02_img/gg4.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] --- ## Construcción de grĆ”ficos en ggplot2 ```r paises <- datos::paises str(paises) ``` ``` tibble [1,704 Ć 6] (S3: tbl_df/tbl/data.frame) $ pais : Factor w/ 142 levels "AfganistĆ”n","Albania",..: 1 1 1 1 1 1 1 1 1 1 ... $ continente : Factor w/ 5 levels "Ćfrica","AmĆ©ricas",..: 3 3 3 3 3 3 3 3 3 3 ... $ anio : int [1:1704] 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ... $ esperanza_de_vida: num [1:1704] 28.8 30.3 32 34 36.1 ... $ poblacion : int [1:1704] 8425333 9240934 10267083 11537966 13079460 14880372 12881816 13867957 16317921 22227415 ... $ pib_per_capita : num [1:1704] 779 821 853 836 740 ... ``` --- count: false .panel1-g2-auto[ ```r *ggplot(paises, aes(x = pib_per_capita, * y = esperanza_de_vida, * colour = continente)) ``` ] .panel2-g2-auto[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/g2_auto_01_output-1.png" width="504" /> ] --- count: false .panel1-g2-auto[ ```r ggplot(paises, aes(x = pib_per_capita, y = esperanza_de_vida, colour = continente)) + * geom_point() ``` ] .panel2-g2-auto[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/g2_auto_02_output-1.png" width="504" /> ] --- count: false .panel1-g2-auto[ ```r ggplot(paises, aes(x = pib_per_capita, y = esperanza_de_vida, colour = continente)) + geom_point() + * labs(title = "Asociación", * x = "PIB per cĆ”pita", * y = "Esperanza de vida", * colour='Continente') ``` ] .panel2-g2-auto[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/g2_auto_03_output-1.png" width="504" /> ] <style> .panel1-g2-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-g2-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-g2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- ## Tipos de grĆ”ficos **Histogramas**: Se usa para visualizar la distribución de los valores de una variable numĆ©rica. .pull-left[ ```r ggplot(data = paises, mapping = aes(x = pib_per_capita)) + geom_histogram(color = "white", fill ="#9292ff", bins = 15) ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-28-1.png" width="504" /> ] --- ## Tipos de grĆ”ficos **GrĆ”ficos de puntos**: Se usa para encontrar relaciones o patrones entre dos variables (al menos una debe ser numĆ©rica). .pull-left[ ```r ggplot(data = paises, mapping = aes(x = pib_per_capita, y = esperanza_de_vida)) + geom_point(color = "#ff7979", size = 8, alpha = 0.3) ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-30-1.png" width="504" /> ] --- ## Tipos de grĆ”ficos **Boxplots**: Para observar la distribución de una variable numĆ©rica. Muy Ćŗtil para comparar las distribuciones por grupo. .pull-left[ ```r ggplot(data = paises, mapping = aes(x = continente, y = esperanza_de_vida) ) + geom_boxplot(color = "blue", fill ="#9292ff") ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-32-1.png" width="504" /> ] --- ## Tipos de grĆ”ficos **LĆneas**: Se usa para analizar tendencias de una variable numĆ©rica en el tiempo. En el ejemplo, se presenta la evolución de la esperanza de vida en Chile desde 1960. .pull-left[ ```r ggplot(data = paises[paises$pais == "Chile",] , aes(x = anio, y = esperanza_de_vida)) + geom_line(color = "#9292ff", size = 2) ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-34-1.png" width="504" /> ] --- ## Tipos de grĆ”ficos **Barras**: Se usa para conocer la frecuencia relativa o absoluta de las clases de una variable categórica o discreta. .pull-left[ ```r ggplot(data = paises, mapping = aes(y=continente)) + geom_bar(color = "white", fill ="#9292ff") + labs(title = "Distribución de paĆses", x = 'Continentes', y = 'Frecuencia') ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-36-1.png" width="504" /> ] --- ## Tipos de grĆ”ficos <iframe width="1212" height="682" src="https://r-graph-gallery.com/" title="https://r-graph-gallery.com/" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" style="width:100%; height:80%;" allowfullscreen></iframe> --- ## Customización de grĆ”ficos en ggplot2 **Un color para todo el grĆ”fico** .pull-left[ ```r paises %>% filter(anio == 2007) %>% ggplot(aes(x=pib_per_capita / poblacion, y=esperanza_de_vida)) + geom_point(color = 'deepskyblue') + labs(title = 'Relación entre PIB per cĆ”pita y esperanza de vida') ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-38-1.png" width="504" /> ] --- ## Customización de grĆ”ficos en ggplot2 **Colores segĆŗn una variable** .pull-left[ ```r paises %>% filter(anio == 2007) %>% ggplot(aes(x=pib_per_capita / poblacion, y=esperanza_de_vida)) + geom_point(aes(color = continente)) + labs(title = 'Relación entre PIB per cĆ”pita y esperanza de vida') ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-40-1.png" width="504" /> ] --- ## Customización de grĆ”ficos en ggplot2 **Colores en grĆ”ficos de barras e histogramas** .pull-left[ ```r paises %>% filter(anio == 2007) %>% ggplot(aes(esperanza_de_vida)) + geom_histogram(fill = 'turquoise', color = 'red') + labs(title = "Distribución esperanza de vida") ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-42-1.png" width="504" /> ] --- ## Customización de grĆ”ficos en ggplot2 **Ejes y tĆtulos** .pull-left[ ```r ggplot(data = paises[paises$pais == "Chile", ] , aes(x = anio, y = esperanza_de_vida)) + geom_line() + geom_point() + labs(title = "Esperanza de vida en Chile", subtitle = "AƱos 1952 a 2007", x = "AƱo", y = "Esperanza de vida") ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-44-1.png" width="504" /> ] --- ## Customización de grĆ”ficos en ggplot2 **Ejes y tĆtulos (forma 2)** .pull-left[ ```r ggplot(data = paises[paises$pais == "Chile", ] , aes(x = anio, y = esperanza_de_vida)) + geom_line() + geom_point() + ggtitle(label = "Esperanza de vida en Chile", subtitle = "AƱos 1952 a 2007") + xlab(label = "AƱo") + ylab(label = "Esperanza de vida") ``` ] .pull-right[ <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-46-1.png" width="504" /> ] --- ## Customización de grĆ”ficos en ggplot2 **Argumentos color y size** ```r ggplot(data = paises, aes(x = esperanza_de_vida, y = pib_per_capita)) + geom_point(aes(size = poblacion, color = continente), alpha = 0.7) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-47-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Argumentos color y size** ```r ggplot(data = paises[paises$continente=="AmĆ©ricas",], aes(x = esperanza_de_vida, y = pib_per_capita)) + geom_point(aes(color = poblacion), size = 2) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-48-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Leyendas**: La leyenda puede personalizarse mediante el argumento theme(), función que permite modificar la mayorĆa de los elementos estĆ©ticos de un ggplot. ```r ggplot(data = paises[paises$pais %in% c("Chile", "Argentina", "PerĆŗ", "Brasil"),], aes(x = anio, y = esperanza_de_vida, color = pais) ) + geom_point(size = 3) + geom_line(size = 1) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-49-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 ```r ggplot(data = paises[paises$pais %in% c("Chile", "Argentina", "PerĆŗ", "Brasil"),], aes(x = anio, y = esperanza_de_vida, color = pais) ) + geom_point(size = 3) + geom_line(size = 1) + theme(legend.position = "bottom", legend.title = element_blank(), legend.background = element_rect(fill="white")) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-50-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Temas** En la librerĆa ggplot existe una variedad de temas precargados que permiten modificar de manera rĆ”pida cómo se ve el fondo de un grĆ”fico. Estos son: > `theme_grey()`/`theme_gray()` - Por defecto > `theme_bw()` > `theme_linedraw()` > `theme_light()` > `theme_dark()` > `theme_minimal()` > `theme_classic()` > `theme_void()` > `theme_test()` --- ## Customización de grĆ”ficos en ggplot2 **Temas** .pull-left[ ```r ggplot(data = paises[paises$pais=="Chile",], aes(anio, esperanza_de_vida)) + geom_point(color = "#79bcff", size = 5) + theme_light() ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-51-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] .pull-right[ ```r ggplot(data = paises[paises$pais=="Chile",], aes(anio, esperanza_de_vida)) + geom_point(color = "#79bcff", size = 5) + theme_dark() ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-52-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] --- ## Customización de grĆ”ficos en ggplot2 **Temas** .pull-left[ ```r ggplot(data = paises[paises$pais=="Chile",], aes(anio, esperanza_de_vida)) + geom_point(color = "#79bcff", size = 5) + theme_bw() ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-53-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] .pull-right[ ```r ggplot(data = paises[paises$pais=="Chile",], aes(anio, esperanza_de_vida)) + geom_point(color = "#79bcff", size = 5) + theme_classic() ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-54-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> ] --- ## Customización de grĆ”ficos en ggplot2 **Colores** .pull-left[ <img src="data:image/png;base64,#02_img/rcolor.png" width="90%" height="90%" style="display: block; margin: auto;" /> ] .pull-right[ La librerĆa `RColorBrewer` contiene un gran nĆŗmero de paletas de colores para los grĆ”ficos de R y ggplot2. Las paletas de colores se definen con el argumento palette dentro de los comandos `scale_color_brewer()` o `scale_fill_brewer()`. ```r install.packages("RColorBrewer") library(RColorBrewer) ``` ] --- ## Customización de grĆ”ficos en ggplot2 **Colores** ```r library(RColorBrewer) ggplot(data=paises, aes(x = esperanza_de_vida, y = pib_per_capita, color = continente)) + geom_point(size = 2.5) + scale_color_brewer(palette="Dark2") ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-57-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Facetas** ```r ggplot(data=paises, aes(x = esperanza_de_vida, y = pib_per_capita, color = continente))+ geom_point(size = 2, alpha = 0.7) + facet_grid(~continente) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-58-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Facetas** ```r ggplot(data = paises[paises$pais %in% c("Chile", "Argentina", "PerĆŗ", "Brasil"),], aes(x = anio,y = esperanza_de_vida, color = pais) ) + geom_point(size = 3) + geom_line(size = 1) + facet_wrap(~ pais) + theme_bw() ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-59-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Matrices de grĆ”ficos** ```r g1 = ggplot(data = paises, aes(x = esperanza_de_vida)) + geom_histogram(fill = "lightblue") + labs(x = element_blank(), y = element_blank()) g2 = ggplot(data = paises, aes(x = esperanza_de_vida)) + geom_boxplot(fill = "lightblue") + labs(x=element_blank()) ``` --- ## Customización de grĆ”ficos en ggplot2 **Matrices de grĆ”ficos** ```r library(gridExtra) grid.arrange(g1,g2, nrow=2) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-61-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Matrices de grĆ”ficos** ```r library(ggpubr) ggarrange(g1,g2, ncol=2) ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-62-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Matrices de grĆ”ficos** ```r library(patchwork) g1 / g2 ``` <img src="data:image/png;base64,#TAD_sesion4_files/figure-html/unnamed-chunk-63-1.png" width="100%" height="100%" style="display: block; margin: auto;" /> --- ## Customización de grĆ”ficos en ggplot2 **Extensiones de ggplot2** <iframe width="1212" height="682" src="https://exts.ggplot2.tidyverse.org/gallery/" title="https://exts.ggplot2.tidyverse.org/gallery/" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" style="width:100%; height:80%;" allowfullscreen></iframe> --- ## Un ejemplo <img src="data:image/png;base64,#02_img/gganim_covid.gif" width="70%" height="70%" style="display: block; margin: auto;" /> --- ## Un ejemplo acadĆ©mico <img src="data:image/png;base64,#02_img/paper.png" width="70%" height="70%" style="display: block; margin: auto;" /> --- ## Referencias > Wickham, H., & Grolemund, G. (2016). R for data science: import, tidy, transform, visualize, and model data. " O'Reilly Media, Inc.". Cap. 2. Recurso en lĆnea: <https://r4ds.hadley.nz/> > Urdinez, F., & Cruz, A. (2020). R for Political Data Science: A Practical Guide. CRC Press. Cap. 3. Recurso en lĆnea en espaƱol: <https://arcruz0.github.io/libroadp/> > Posit Cheatsheets ("hojas de trucos"): <https://posit.co/resources/cheatsheets/?type=posit-cheatsheets/> > PĆ”gina oficial de ggplot2: <https://ggplot2.tidyverse.org/> --- name: despedida class: inverse, center, middle background-image: url(data:image/png;base64,#02_img/logo-uc.png) background-position: 50% 10% background-size: 20%, cover <br> <br> <br> <br> <br> <br> <br> <br> ## Sesión 4 ### Visualización de datos en R 04 de agosto, 2023 <div class="my-footer"></div>
<b>JosƩ D. Conejeros</b> | [
jdconejeros@uc.cl](mailto:jdconejeros@uc.cl) | [
JDConejeros](https://github.com/JDConejeros)